#include <iostream>
#include <vector>

using namespace std;


class Solution {
public:
    int minOperations(vector<int>& nums) {
        int ans = 0;
        stack<int> st;
        
        for (int x : nums) {
            if (x == 0) {
                // 遇到 0，清空栈（重置连续性）
                while (!st.empty()) {
                    st.pop();
                    ans++;
                }
                continue;
            }
            
            while (!st.empty() && x < st.top()) {
                st.pop();
                ans++;
            }
            
            if (st.empty() || x != st.top()) {
                st.push(x);
            }
        }
        
        // 处理最后栈中剩余的元素
        while (!st.empty()) {
            st.pop();
            ans++;
        }
        
        return ans;
    }
};
